{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scripts.forest import Forest\n",
    "from sklearn.ensemble import IsolationForest\n",
    "from sklearn import mixture\n",
    "from scipy.linalg import qr\n",
    "import scipy.stats as scp\n",
    "from math import cos\n",
    "from sklearn.neighbors import LocalOutlierFactor\n",
    "import rrcf\n",
    "from pyod.models.knn import KNN\n",
    "from pyod.models.pca import PCA\n",
    "from sklearn.svm import OneClassSVM\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def add_dimension(arr, dim):\n",
    "    if dim == 0:\n",
    "        return arr\n",
    "    _, n_pts = np.shape(arr)\n",
    "    added = np.random.randint(low=0, high = 100, size = ( dim, n_pts))\n",
    "    added = added - 50\n",
    "    added = added/25\n",
    "    return np.vstack((arr,added))\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#n_pts per Gaussian\n",
    "def sample_points(n_Gaussians, n_pts, noisy_dim):\n",
    "    means = []\n",
    "    covs = []\n",
    "    for i in range(n_Gaussians):\n",
    "        #a = np.random.randint(0, 3 * n_Gaussians)\n",
    "        a = 4*i\n",
    "        #b = np.random.randint(0, 3 * n_Gaussians)\n",
    "        b = 4*i\n",
    "        c = np.random.randint(0, 1000)\n",
    "        means.append([a,b])\n",
    "        cov = [[1,cos(c)], [cos(c), 2]]\n",
    "        #cov = [[0.3 + 3*i,0.1],[0.1,0.1 + 3*i]]\n",
    "        covs.append(cov)\n",
    "    G_x = np.zeros((n_Gaussians, n_pts))\n",
    "    G_y = np.zeros((n_Gaussians, n_pts))\n",
    "    pts_l = []\n",
    "    for i in range(n_Gaussians):\n",
    "        G_x[i], G_y[i] = np.random.multivariate_normal(means[i], covs[i], n_pts).T\n",
    "        pts_l.append(np.vstack((G_x[i], G_y[i])))    \n",
    "    pts = np.hstack(pts_l)\n",
    "    noisy_pts = add_dimension(pts, noisy_dim)\n",
    "    return pts, noisy_pts, means, covs\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_truth(pts, means, covs):    \n",
    "    dist = []\n",
    "    n_G = len(means[0])\n",
    "    for i in range(n_G):\n",
    "        dist.append(scp.multivariate_normal(mean = means[i], cov = covs[i]))\n",
    "    ptsT = np.transpose(pts)\n",
    "    t_scores = np.zeros(len(ptsT))\n",
    "    for i in range(len(t_scores)):\n",
    "        for j in range(n_G):\n",
    "            t_scores[i] += dist[j].pdf(ptsT[i])\n",
    "    t_indices = np.argsort(t_scores)[:100]\n",
    "    return t_indices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_iso(noisy_pts):\n",
    "    rng = np.random.RandomState(27)\n",
    "    _, n_p = np.shape(noisy_pts)\n",
    "    clf = IsolationForest(max_samples = 100, random_state = rng, contamination = 0.1, n_estimators= int(n_p / 50), behaviour = \"new\")\n",
    "    clf.fit(np.transpose(noisy_pts))\n",
    "    Y = clf.predict(np.transpose(noisy_pts))\n",
    "    iso_indices = []\n",
    "    for i in range(len(Y)):\n",
    "        if Y[i] == -1:\n",
    "            iso_indices.append(i)\n",
    "    return iso_indices\n",
    "\n",
    "def get_lof(noisy_pts):\n",
    "    lof = LocalOutlierFactor(n_neighbors=10, contamination=0.1)\n",
    "    Z = lof.fit_predict(np.transpose(noisy_pts))\n",
    "    lof_indices = []\n",
    "    for i in range(len(Z)):\n",
    "        if Z[i] == -1:\n",
    "            lof_indices.append(i)\n",
    "    return lof_indices\n",
    "\n",
    "def get_density(noisy_pts):\n",
    "    _, n_p = np.shape(noisy_pts)\n",
    "    kwargs = {'max_depth': 12, 'n_trees':20,  'max_samples': 300, 'max_buckets': 3, 'epsilon': 0.1, 'sample_axis': 1, 'threshold': 0}\n",
    "    forest = Forest(**kwargs)\n",
    "    forest.fit(noisy_pts)\n",
    "    gsw_indices, outliers, scores , pst, m_min = forest.predict(noisy_pts, 0.1)\n",
    "    return gsw_indices\n",
    "\n",
    "def get_em(noisy_pts, n_g):\n",
    "    mlf = mixture.GaussianMixture(n_components=n_g, covariance_type='full')\n",
    "    mlf.fit(np.transpose(noisy_pts))\n",
    "    Z = -mlf.score_samples(np.transpose(noisy_pts))\n",
    "    mix_indices = np.argsort(Z)[-100:]\n",
    "    return mix_indices\n",
    "\n",
    "def get_rrcf(noisy_pts):\n",
    "    num_trees = 500\n",
    "    tree_size = 256\n",
    "    X = np.transpose(noisy_pts)\n",
    "    [n,d] = np.shape(X)\n",
    "    forest = []\n",
    "    while len(forest) < num_trees:\n",
    "        # Select random subsets of points uniformly from point set\n",
    "        ixs = np.random.choice(n, size=(n // tree_size, tree_size),\n",
    "               replace=False)\n",
    "        # Add sampled trees to forest\n",
    "        trees = [rrcf.RCTree(X[ix], index_labels=ix) for ix in ixs]\n",
    "        forest.extend(trees)\n",
    "        \n",
    "    avg_codisp = pd.Series(0.0, index=np.arange(n))\n",
    "    index = np.zeros(n)\n",
    "    for tree in forest:\n",
    "        codisp = pd.Series({leaf : tree.codisp(leaf) for leaf in tree.leaves})\n",
    "        avg_codisp[codisp.index] += codisp\n",
    "        np.add.at(index, codisp.index.values, 1)\n",
    "    avg_codisp /= index\n",
    "    alg_scores = avg_codisp\n",
    "    alg_indices = np.argsort(alg_scores)[-100:]\n",
    "    return alg_indices\n",
    "\n",
    "def get_svm(noisy_pts):\n",
    "    X = np.transpose(noisy_pts)\n",
    "    clf = OneClassSVM(kernel='rbf')\n",
    "    clf.fit(X)\n",
    "    alg_scores = clf.score_samples(X)\n",
    "    alg_scores = - alg_scores\n",
    "    alg_indices = np.argsort(alg_scores)[-100:]\n",
    "    return alg_indices\n",
    "\n",
    "def get_knn(noisy_pts):\n",
    "    X = np.transpose(noisy_pts)\n",
    "    clf = KNN()\n",
    "    clf.fit(X)\n",
    "    alg_scores = clf.decision_scores_ \n",
    "    alg_indices = np.argsort(alg_scores)[-100:]\n",
    "    return alg_indices\n",
    "\n",
    "def get_pca(noisy_pts):\n",
    "    X = np.transpose(noisy_pts)\n",
    "    clf = PCA()\n",
    "    clf.fit(X)\n",
    "    alg_scores = clf.decision_scores_ \n",
    "    alg_indices = np.argsort(alg_scores)[-100:]\n",
    "    return alg_indices\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "n_G:  2 noisy dim:  0\n",
      "IForest \n",
      "PIDForest\n",
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 80 50 93 57 75 85 72 48\n",
      "averages for dimension 0 :  [80. 50. 93. 57. 75. 85. 72. 48.]\n",
      "n_G:  2 noisy dim:  1\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 81 46 80 63 74 77 78 41\n",
      "averages for dimension 1 :  [81. 46. 80. 63. 74. 77. 78. 41.]\n",
      "n_G:  2 noisy dim:  2\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 70 37 70 68 66 64 68 38\n",
      "averages for dimension 2 :  [70. 37. 70. 68. 66. 64. 68. 38.]\n",
      "n_G:  2 noisy dim:  3\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 68 36 63 55 68 59 62 38\n",
      "averages for dimension 3 :  [68. 36. 63. 55. 68. 59. 62. 38.]\n",
      "n_G:  2 noisy dim:  4\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 47 22 59 57 54 49 55 24\n",
      "averages for dimension 4 :  [47. 22. 59. 57. 54. 49. 55. 24.]\n",
      "n_G:  2 noisy dim:  5\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 52 34 54 50 60 43 53 35\n",
      "averages for dimension 5 :  [52. 34. 54. 50. 60. 43. 53. 35.]\n",
      "n_G:  2 noisy dim:  6\n",
      "IForest \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PIDForest\n",
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 53 19 47 43 56 40 46 31\n",
      "averages for dimension 6 :  [53. 19. 47. 43. 56. 40. 46. 31.]\n",
      "n_G:  2 noisy dim:  7\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "error: var_red is -0.5\n",
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 54 18 50 47 59 45 52 25\n",
      "averages for dimension 7 :  [54. 18. 50. 47. 59. 45. 52. 25.]\n",
      "n_G:  2 noisy dim:  8\n",
      "IForest \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PIDForest\n",
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 45 18 44 43 45 37 43 31\n",
      "averages for dimension 8 :  [45. 18. 44. 43. 45. 37. 43. 31.]\n",
      "n_G:  2 noisy dim:  9\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 47 13 39 33 53 37 37 25\n",
      "averages for dimension 9 :  [47. 13. 39. 33. 53. 37. 37. 25.]\n",
      "n_G:  2 noisy dim:  10\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 62 24 51 44 57 46 47 26\n",
      "averages for dimension 10 :  [62. 24. 51. 44. 57. 46. 47. 26.]\n",
      "n_G:  2 noisy dim:  11\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 46 14 44 42 48 35 41 18\n",
      "averages for dimension 11 :  [46. 14. 44. 42. 48. 35. 41. 18.]\n",
      "n_G:  2 noisy dim:  12\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 60 17 39 31 54 37 35 22\n",
      "averages for dimension 12 :  [60. 17. 39. 31. 54. 37. 35. 22.]\n",
      "n_G:  2 noisy dim:  13\n",
      "IForest \n",
      "PIDForest\n",
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 49 13 40 37 49 43 42 27\n",
      "averages for dimension 13 :  [49. 13. 40. 37. 49. 43. 42. 27.]\n",
      "n_G:  2 noisy dim:  14\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 56 13 47 39 57 38 40 28\n",
      "averages for dimension 14 :  [56. 13. 47. 39. 57. 38. 40. 28.]\n",
      "n_G:  2 noisy dim:  15\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 55 21 35 32 53 38 39 20\n",
      "averages for dimension 15 :  [55. 21. 35. 32. 53. 38. 39. 20.]\n",
      "n_G:  2 noisy dim:  16\n",
      "IForest \n",
      "PIDForest\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 44 11 36 41 44 35 42 16\n",
      "averages for dimension 16 :  [44. 11. 36. 41. 44. 35. 42. 16.]\n",
      "n_G:  2 noisy dim:  17\n",
      "IForest \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PIDForest\n",
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 51 14 35 28 46 41 34 19\n",
      "averages for dimension 17 :  [51. 14. 35. 28. 46. 41. 34. 19.]\n",
      "n_G:  2 noisy dim:  18\n",
      "IForest \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PIDForest\n",
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 49 9 33 33 46 35 35 19\n",
      "averages for dimension 18 :  [49.  9. 33. 33. 46. 35. 35. 19.]\n",
      "n_G:  2 noisy dim:  19\n",
      "IForest \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PIDForest\n",
      "EM \n",
      "LOF \n",
      "RRCF \n",
      "SVM \n",
      "kNN \n",
      "PCA\n",
      "\n",
      "Exp:  0 Results [us, iso , em, lof, rrcf, svm, knn, pca] 46 16 35 35 43 35 31 16\n",
      "averages for dimension 19 :  [46. 16. 35. 35. 43. 35. 31. 16.]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "n_Gaussians = 2\n",
    "n_pts = 500\n",
    "n_exp = 1\n",
    "dimensions = 20\n",
    "final_res = np.zeros((8, dimensions))\n",
    "for noisy_dim in range(dimensions):\n",
    "    print(\"n_G: \", n_Gaussians, \"noisy dim: \", noisy_dim)\n",
    "    res = np.zeros((8, n_exp))\n",
    "    for exp in range(n_exp):    \n",
    "        pts, noisy_pts, means, covs = sample_points(n_Gaussians, n_pts, noisy_dim)\n",
    "        t_indices = get_truth(pts, means, covs)\n",
    "        print('IForest ')\n",
    "        iso_indices = get_iso(noisy_pts)\n",
    "        print('PIDForest')\n",
    "        gsw_indices = get_density(noisy_pts)\n",
    "        print('EM ')\n",
    "        em_indices = get_em(noisy_pts, n_Gaussians)\n",
    "        print('LOF ')\n",
    "        lof_indices = get_lof(noisy_pts)\n",
    "        print('RRCF ')\n",
    "        rrcf_indices = get_rrcf(noisy_pts)\n",
    "        print('SVM ')\n",
    "        svm_indices = get_svm(noisy_pts)\n",
    "        print('kNN ')\n",
    "        knn_indices = get_knn(noisy_pts)\n",
    "        print('PCA\\n')\n",
    "        pca_indices = get_pca(noisy_pts)\n",
    "        us = len(set(t_indices).intersection(set(gsw_indices)))\n",
    "        iso = len(set(t_indices).intersection(set(iso_indices)))\n",
    "        em = len(set(em_indices).intersection(set(t_indices)))\n",
    "        lof = len(set(lof_indices).intersection(set(t_indices)))\n",
    "        rrcf_int = len(set(t_indices).intersection(set(rrcf_indices)))\n",
    "        svm_int = len(set(t_indices).intersection(set(svm_indices)))\n",
    "        knn_int = len(set(t_indices).intersection(set(knn_indices)))\n",
    "        pca_int = len(set(t_indices).intersection(set(pca_indices)))\n",
    "        \n",
    "        res[:, exp] = [us, iso, em, lof, rrcf_int, svm_int, knn_int, pca_int]\n",
    "        print(\"Exp: \", exp, \"Results [us, iso , em, lof, rrcf, svm, knn, pca]\", us, iso, em, lof, rrcf_int, svm_int, knn_int, pca_int)\n",
    "    final_res[:, noisy_dim] = [np.average(res[0,:]), np.average(res[1,:]), np.average(res[2,:]), np.average(res[3,:]), np.average(res[4,:]), np.average(res[5,:]), np.average(res[6,:]), np.average(res[7,:])]\n",
    "    print(\"averages for dimension\", noisy_dim, \": \", final_res[:,noisy_dim])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[80. 81. 70. 68. 47. 52. 53. 54. 45. 47. 62. 46. 60. 49. 56. 55. 44. 51.\n",
      "  49. 46.]\n",
      " [50. 46. 37. 36. 22. 34. 19. 18. 18. 13. 24. 14. 17. 13. 13. 21. 11. 14.\n",
      "   9. 16.]\n",
      " [93. 80. 70. 63. 59. 54. 47. 50. 44. 39. 51. 44. 39. 40. 47. 35. 36. 35.\n",
      "  33. 35.]\n",
      " [57. 63. 68. 55. 57. 50. 43. 47. 43. 33. 44. 42. 31. 37. 39. 32. 41. 28.\n",
      "  33. 35.]\n",
      " [75. 74. 66. 68. 54. 60. 56. 59. 45. 53. 57. 48. 54. 49. 57. 53. 44. 46.\n",
      "  46. 43.]\n",
      " [85. 77. 64. 59. 49. 43. 40. 45. 37. 37. 46. 35. 37. 43. 38. 38. 35. 41.\n",
      "  35. 35.]\n",
      " [72. 78. 68. 62. 55. 53. 46. 52. 43. 37. 47. 41. 35. 42. 40. 39. 42. 34.\n",
      "  35. 31.]\n",
      " [48. 41. 38. 38. 24. 35. 31. 25. 31. 25. 26. 18. 22. 27. 28. 20. 16. 19.\n",
      "  19. 16.]]\n"
     ]
    }
   ],
   "source": [
    "print(final_res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.savetxt('mixture_noise_all.text', final_res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#plt.figure(figsize=(20,10))\n",
    "plt.rcParams.update({'font.size':14})\n",
    "plt.title('Mixture of Gaussians with added Noise')\n",
    "plt.plot(final_res[0,:], label = \"PIDForest\", linewidth = 2, marker = \"v\")\n",
    "plt.plot(final_res[1,:], label = \"Isolation Forest\", linewidth = 2, marker = \"o\")\n",
    "plt.plot(final_res[2,:], label = \"EM\", linewidth = 2, marker = \"s\")\n",
    "plt.plot(final_res[3,:], label = \"LOF\", linewidth = 2, marker = \"+\")\n",
    "\n",
    "plt.xticks(np.arange(0, 20, step=2))\n",
    "plt.legend(prop={'size':13})\n",
    "plt.ylabel('accuracy')\n",
    "plt.xlabel('noise dimension')\n",
    "plt.axis([0, 20, 0, 100])\n",
    "# plt.savefig(\"noisy_Gaussian.pdf\", bbox_inches = 'tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#plt.figure(figsize=(20,10))\n",
    "plt.rcParams.update({'font.size':14})\n",
    "plt.title('Mixture of Gaussians with added Noise')\n",
    "plt.plot(final_res[0,:], label = \"PIDForest\", linewidth = 2, marker = \".\")\n",
    "plt.plot(final_res[4,:], label = \"RRCF\", linewidth = 2, marker = \"v\")\n",
    "plt.plot(final_res[5,:], label = \"SVM\", linewidth = 2, marker = \"o\")\n",
    "plt.plot(final_res[6,:], label = \"kNN\", linewidth = 2, marker = \"s\")\n",
    "plt.plot(final_res[7,:], label = \"PCA\", linewidth = 2, marker = \"+\")\n",
    "\n",
    "plt.xticks(np.arange(0, 20, step=2))\n",
    "plt.legend(prop={'size':13})\n",
    "plt.ylabel('accuracy')\n",
    "plt.xlabel('noise dimension')\n",
    "plt.axis([0, 20, 0, 100])\n",
    "plt.savefig(\"noisy_Gaussian_all.pdf\", bbox_inches = 'tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[80., 81., 70., 68., 47., 52., 53., 54., 45., 47., 62., 46., 60.,\n",
       "        49., 56., 55., 44., 51., 49., 46.],\n",
       "       [50., 46., 37., 36., 22., 34., 19., 18., 18., 13., 24., 14., 17.,\n",
       "        13., 13., 21., 11., 14.,  9., 16.],\n",
       "       [93., 80., 70., 63., 59., 54., 47., 50., 44., 39., 51., 44., 39.,\n",
       "        40., 47., 35., 36., 35., 33., 35.],\n",
       "       [57., 63., 68., 55., 57., 50., 43., 47., 43., 33., 44., 42., 31.,\n",
       "        37., 39., 32., 41., 28., 33., 35.],\n",
       "       [75., 74., 66., 68., 54., 60., 56., 59., 45., 53., 57., 48., 54.,\n",
       "        49., 57., 53., 44., 46., 46., 43.],\n",
       "       [85., 77., 64., 59., 49., 43., 40., 45., 37., 37., 46., 35., 37.,\n",
       "        43., 38., 38., 35., 41., 35., 35.],\n",
       "       [72., 78., 68., 62., 55., 53., 46., 52., 43., 37., 47., 41., 35.,\n",
       "        42., 40., 39., 42., 34., 35., 31.],\n",
       "       [48., 41., 38., 38., 24., 35., 31., 25., 31., 25., 26., 18., 22.,\n",
       "        27., 28., 20., 16., 19., 19., 16.]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
